The virtual explosion of technical advances in microelectronics, digital computers and software have changed the face of modern society. In fact, these technological advances have become so important and pervasive that this explosion is sometimes referred to as "the information revolution." Through telephone lines, networks, satellite communications and the like, information and resources are ever increasingly being accessed and shared.
When a group of computers are connected to one another, such as in a client/server network, a management service is typically used to organize and administer information and resources across the network. Management services usually access or include a database having a collection of objects that represent a variety of things. For instance, some typical objects represent users, groups, printers, computers, and the like. Objects in a management service are often organized in flat domains such as the SECURITY ACCOUNTS MANAGER ("SAM") of WINDOWS NT, in a distributed directory such as NOVELL DIRECTORY SERVICES ("NDS"), or in other ways known in the art. Each management service object has at least one associated attribute with one or more associated values. Generally, each attribute has an attribute syntax such that the value associated with the attribute is of a data type corresponding to the attribute syntax. For example, integer values are associated with integer attributes.
Typically, each object is of a particular type and is created from a corresponding class. For example, a User object would be created from a User class, a Printer object would be created from a Printer class, etc. The object classes provide a kind of template to define the various attributes that will be associated with the objects. Building on the prior example, an object created from the User class could have the following attributes: Given Name, Last Name, Title, telephone Number, etc. When an object is created from a class, values are filled into the various attributes of the class, thereby creating an instance of the class. For example, a User object could have the value "Owen" associated with the attribute Given Name.
Typically, the structure of the distributed directory is governed by a schema. The schema defines the rules for adding and managing objects and attributes of objects in the distributed directory. These rules are specified through a data dictionary that provides a standard set of data types or classes from which objects can be created. Each object in the distributed directory belongs to an object class that specifies which attributes are associated with the object. Generally, the schema is extensible so that it may be tailored to modify existing classes or add new classes.
The schema controls not only the structure of the individual objects, but also the relationship among the objects in the distributed directory. In controlling this relationship, the schema specifies subordination among object classes. That is, for every object there is a group of object classes from which subordinate objects can be formed. Objects that can contain other objects are called container objects, which are building blocks of the distributive directory. Objects that cannot contain other objects are known as non-container or leaf objects.
With the growing use of the Internet, there is a need for directories on the Internet to provide support for schema independence. Schema independence means support for storage and retrieval of the desired information in the directory in the way that the user/owner wants to store or retrieve it. For example, one schema may store telephone numbers under the object phone_number and another schema as telephone_number or contact_number. When the first directory wants to access and retrieve the phone_number from the second directory nothing will be returned as the directories are unaware that each directory has named the same information a different name. Therefore, there is a need for adaptive schema supported directories.